home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Texteditors / Origami / Sources / doc / lg2AMS.awk < prev    next >
Encoding:
AWK Script  |  1996-09-27  |  2.3 KB  |  90 lines

  1. #{{{}}}
  2. #{{{  BEGIN -> init all parts of the tables,index,..
  3. BEGIN {
  4.   FS="\t"
  5.   NEWLINE="\n"
  6.   DQ=sprintf("%c",34)
  7.   tab_str=""
  8.   doc_str=""
  9.   ind_str=""
  10.   doc_str=doc_str "Language|foldline comments:\n"
  11.   tab_str=tab_str "l l s\n"
  12.   doc_str=doc_str "|start|end\n"
  13.   tab_str=tab_str "l l l\n"
  14.   doc_str=doc_str "None||\n"
  15.   tab_str=tab_str "l l l\n"
  16.   ind_str=ind_str ".dX None\n"
  17.   replace["LANG_None"]="None"
  18. }
  19. #}}}
  20. #{{{  add a language
  21. $1!="#" {
  22.   tab_str=tab_str "l l l\n"
  23.   ind_str=ind_str ".dX "
  24.   ind_str=ind_str substr($1,2,length($1)-2)
  25.   ind_str=ind_str "\n"
  26.   replace["LANG_"substr($1,2,length($1)-2)]=$1
  27.   doc_str=doc_str substr($1,2,length($1)-2) "|"
  28.   for (l=2;l<=3;l++) {
  29.      for (i=2;i<length($l);i++) {
  30.         if (substr($l,i,1)==".") {
  31.            doc_str=doc_str "\\\\\\&."
  32.         } else
  33.            if (substr($l,i,2)=="\\\\") {
  34.              doc_str=doc_str "\\\\e"
  35.              i++
  36.            } else
  37.               if (substr($l,i,1)=="\\" && substr($l,i+1,1)==DQ) {
  38.                  doc_str=doc_str DQ
  39.                  i++
  40.               } else
  41.                 doc_str=doc_str substr($l,i,1)
  42.      }
  43.      if (l==2)
  44.         doc_str=doc_str "|"
  45.      else
  46.         doc_str=doc_str "\n"
  47.   }
  48. }
  49. #}}}
  50. #{{{  END -> generate table text and all replace statements
  51. END {
  52. #  {{{  add user  to tbl
  53.   doc_str=doc_str "User|any sequences, up to >>>FOLD_COMMENT_LENGTH<<< characters|\n"
  54.   tab_str=tab_str "l l s\n"
  55.   ind_str=ind_str ".dX User\n"
  56. #  }}}
  57. #  {{{  add inmos to tbl
  58.   doc_str=doc_str "Inmos|a binary format, see below\n"
  59.   tab_str=tab_str "l l s.\n"
  60.   ind_str=ind_str ".dX Inmos\n"
  61.   replace["LANG_Inmos"]="Inmos"
  62. #  }}}
  63.   replace["LANG_LIST"]=sprintf("%s.TS\ntab(|);\n%s%s.TE\n",ind_str,tab_str,doc_str)
  64.   for (s in replace) {
  65.      out=replace[s]
  66.      for (do_replace="";out!="";) {
  67. #        {{{  \n -> \ and \n
  68.         if (substr(out,1,1)=="\n") {
  69.            do_replace=do_replace "\\\n"
  70.            out=substr(out,2)
  71.            continue
  72.         }
  73. #        }}}
  74. #        {{{  / -> \ /
  75.         if (substr(out,1,1)=="/") {
  76.            do_replace=do_replace "\\/"
  77.            out=substr(out,2)
  78.            continue
  79.         }
  80. #        }}}
  81. #        {{{  copy the original
  82.         do_replace=do_replace substr(out,1,1)
  83.         out=substr(out,2)
  84. #        }}}
  85.      }
  86.      print("s/>>>"s"<<</"do_replace"/g")
  87.    }
  88. }
  89. #}}}
  90.